// Copyright (C) 1997-2002 Alias|Wavefront,
// a division of Silicon Graphics Limited.
//
// The information in this file is provided for the exclusive use of the
// licensees of Alias|Wavefront.  Such users have the right to use, modify,
// and incorporate this code into other products for purposes authorized
// by the Alias|Wavefront license agreement, without fee.
//
// ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
// EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
//

//
//  Alias|Wavefront Script File
//  MODIFY THIS AT YOUR OWN RISK
//
//  Creation Date:  October 1998
//  Author:         js
//
//  Description:
//      dynExecuteCollisionCommand executes the collision command 
//
//  Input Arguments():
//		string $collisionCmd -- the collision command string (except for the selection)
//
//  Return Value:
//      None.
//
//
//  ============== dynExecuteCollisionCommand ==============
//
//  SYNOPSIS
//		Execute the collision command.
//		The last item in the selection list is the collision, and all
//		other items collide with it.
//
global proc	dynExecuteCollisionCommand(string $collisionCmd)
{
	string $fullCmd;
	int $numParticleObjs;
	int $i;

	// Get the selection list.
	//
	string $selected[] = `ls -sl`;
	int    $selCount = size($selected);
	int    $connCount = $selCount - 1;

	// Make the last object in the list a collider.
	//
	string $collider = $selected[ $selCount-1 ];
	$collisionCmd = $collisionCmd + " " + $collider;
	evalEcho( $collisionCmd );

	// See if the very last object in the list was a particle shape.
	// If that's the case, and we got this far, then it must be a soft
	// object, because if it were anything else then the collision 
	// command would have failed and we would not be here.
	// In this case, get the geomtry which immediately precedes
	// the particle shape in the list.
	//
	if ((`particleExists $collider`) && ($selCount > 1))
	{
		$collider = $selected[ $selCount-2 ];
		$connCount = $selCount - 2;
	}

	// Now connect all the other objects in the list to it.
	//
    string $connectNames = "";
    for ($i = 0; $i < $connCount; $i++)
    {
		string $objName = $selected[$i];
        if (size($objName)>0)
        	$connectNames  = $connectNames + " " + $objName;
    }

    if (size($connectNames) > 0)
    {
		string $connectCmd =
			"connectDynamic -c " + $collider + " " + $connectNames;
        evalEcho($connectCmd);
    }
}

